home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 73
/
PCMania CD73_1.iso
/
sharewar
/
varios
/
partial
/
LIB
/
ARTICULO.013
< prev
next >
Wrap
Text File
|
1996-01-06
|
6KB
|
129 lines
/* TECNICAS DE PROTECCION / DESPROTECCION */
Se inicia esta sección con la intención de dar a conocer técnicas para
crackear programas, juegos, etc o incluso para proteger nuestros programas
contra estas.
Intentaré dar a conocer todos los conocimientos que estén a mi humilde
alcance, de todos modos, todos aquellos crackers con ganas de luchar por
la libertad de información de estas u otras técnicas, que contribuyan con
la revista [ es una orden! ;-) ].
Bueno ya hemos hablado demasiado, al tema!
CLAVES SENCILLAS
----------------
Vamos a comenzar con la desprotección de claves sencillas, ( antes de todo y
aunque sea un poco inocente por mi parte un crack para todos aquellos que lo
desconozcan es un programa realizado por un cracker destinado a bular la
protección de otro programa.) como ibamos deciendo vamos a desproteger
claves sencillas, es decir, programas que no tienen ningún tipo de protección
excepto esta clave.
(Por otro lado para la gente que lo desconozca existen muchos otros tipos
de protecciones como los discos llave, que en teoría no se pueden copiar
pero aquí aprenderemos a copiarlos, las mochilas o llaves hardware que se
conectan al puerto serie o paralelo, los programas que se descomprimen en
ejecución ( aprenderemos hacerlos en la sección de virus ) y a continuación
se vuelven a comprimir, y todos aquellos que imaginen o la mezcla de todos
a la vez, teniendo en cuenta que cada uno tiene su incoveniente oportuno ).
Bueno sigamos, es que a veces me lio demasiado ;-), imaginar que tenemos un
programa que nada más inicializarlo te pide la clave de acceso ( recordar que
estamos hablando de programas normalmente antiguos y sin ningún otro tipo de
protección ) normalmente como nosotros no la conocemos introduciremos una y
nos saldrá el mensaje de acceso denegado y el programa finalizará .
Lo más práctico sería trazar el programa, es decir, utilizar un debugger para
encontrar donde nos piden la introducción de la clave, utilizando puntos de
ruptura, ejecuciones hasta determinadas líneas, etc, hasta dar con la clave y
cambiarla o saltarla. Pero bueno este procedimiento se deja para el próximo
número.
Bueno entonces ejecutamos el programa y nos pide una clave:
CLAVE:______________
COMPARA SI CLAVE ES DIFERENTE, MAYOR, MENOR, ETC, QUE OTRA VARIABLE
ESPECIFICADA, SINO ES ASI SALTA A EXIT, POR EL CONTRARIO CONTINUA
EL PROGRAMA CORRECTAMENTE.
El cracker lo que debe hacer es coger un debugger y seguir
el código en ensamblador del programa ( un consejo es mejor que cuanto
antes conozcas el lenguaje ensamblador pues es vital en esta sección,
en la de virus, etc, de todos modos tienes el curso de ensamblador en la
revista para inicializarte en este lenguaje), hasta que localicemos el
salto incondicinal. ( usamos este procedimiento por ahora! )
Por ejemplo
Clave: Se pide clave
CMP PASSWORD,'CLAVE'
JNZ SALIR
JMP CLAVE_CORRECTA
SALIR: Finaliza programa
CLAVE_CORRECTA: Continuar
La instrucciones anteriores no tienen porqué ser idénticas, todo depende
de como realice la comparación y el salto incondicional que utilice el
programa en cuestión, en este caso particular CMP ( compara dos variables
restando una de la otra ), JNZ ( mira si el FLAG DE ZERO está a cero, es
decir si la resta de las dos variables da 0, si es así, quiere decir que son
iguales y por tanto esta instrucción que significa saltar sino cero,
no se ejecuta), por último JMP significa saltar a la dirección especificada.
Entonces con esto ya está chupado reventar el programa, cogemos un debugger
y buscamos estas u otras instrucciones que nos indiquen donde se nos pide
introducir la clave, entonces ya unicamente tenemos que NOPear el programa,
es decir donde se encuentra la instrucción de salto colocamos la instrucción
en ensamblador NOP ( que significa no operación ) y de esta manera
al introducir cualquier clave el programa continuará correctamente.
Para no tener que hacer esto continuamente cogemos el debugger y una vez
localizado el salto incondicional apuntamos el codigo hexadecimal que se
encuentra a su izquierda ( por ejemplo en el Turbo Debugger ), es
recomendable coger código hexadecimal además de instrucciones anteriores y
posteriores para después poder localizarlo mejor.
Entonces cogemos un editor hexadecimal buscamos la cadena del salto
incondicional y lo sustituimos por 90 que es el código hexadecimal de NOP,
entonces guardamos los cambios y el programa ya está crackeado.
El supuesto ejemplo anterior sería algo así:
.....
3dh 25h 42h CMP PASSWORD,'CLAVE'
75 02h JNZ SALIR
.... JMP CLAVE_CORRECTA
.....
Entonces cambiamos por NOP.
3dh 25h 42h CMP PASSWORD,'CLAVE'
90 NOP
90 NOP
EBh 10h JMP CLAVE_CORRECTA
( Se dará cuenta que ponemos dos NOP ya que son dos bytes lo que componen
la instrucción a sustituir)
y por arte de magia el programa ya está crackeado ( quedaría una cadena
hexadecimal por ejemplo como 3d25429090 .... )
Para el primer número ya está bien no?, recordar que este procedimiento es
viejo y actualmente los metodos de protección y desprotección son muchísimo
más sofisticados ( aunque quién sabe! ), de todos modos he visto oportuno
comenzar con esta técnica para aquellos que se inician en este mundillo.
Una cosa más en el directorio REGALOS\CRACKER teneis un programa llamado
clave.exe realizado aposta para practicar esta técnica ( y además
su sencillo código en C ). De todos modos el próximo número lo crackearemos
para practicar esta teoría en la práctica y continuaremos avanzando en este
mundillo.
Feliz Crackeo!
HANDLER